package com.qujia.coupon.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.qujia.common.annotation.Excel;
import com.qujia.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;

/**
 * 用户优惠卷的查询实例
 */
@Builder
@ApiModel(description = "优惠券活动统计对象")
public class CouponUser extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */

    private Integer id;

    /**
     * 客户的unid
     */

    private String unionId;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 油站ID
     */

    private Long enterpriseId;

    public Integer getCcsdId() {
        return ccsdId;
    }

    public void setCcsdId(Integer ccsdId) {
        this.ccsdId = ccsdId;
    }

    // 充值活动id
    private Integer ccsdId;



    public List<Long> getEnterpriseIdListForAuthor() {
        return enterpriseIdListForAuthor;
    }
    public void setEnterpriseIdListForAuthor(List<Long> enterpriseIdListForAuthor) {
        this.enterpriseIdListForAuthor = enterpriseIdListForAuthor;
    }
    private List<Long> enterpriseIdListForAuthor;

    @ApiModelProperty(value = "是否已作废 0：否 1：是")
    private String  isDeleted;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "作废时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "作废时间")
    private  Date invalidTime;

    public CouponUser() {
        // 空构造方法
    }

    // 其他成员变量和方法...


    public CouponUser(Integer id, String unionId, Long enterpriseId, Integer ccsdId, List<Long> enterpriseIdListForAuthor, String isDeleted, Date invalidTime, String issueId, Long couponId, String couponIsUsed, String couponIsEffective, Date couponGetTime, Integer userId, String randomFlag, String mobilePhone, List<String> stationIdList, String couponName, String issueName, String couponRemark, String issueRemark, String verificationUserAccount, String couponNo, Integer activityType, String activityName, Date verificationTime, Date verificationBeginTime, Date verificationEndTime, String couponType, String couponAmt, String blogNickName, Date couponEffectiveTime, Long bizId, String bizType) {
        this.id = id;
        this.unionId = unionId;
        this.enterpriseId = enterpriseId;
        this.ccsdId = ccsdId;
        this.enterpriseIdListForAuthor = enterpriseIdListForAuthor;
        this.isDeleted = isDeleted;
        this.invalidTime = invalidTime;
        this.issueId = issueId;
        this.couponId = couponId;
        this.couponIsUsed = couponIsUsed;
        this.couponIsEffective = couponIsEffective;
        this.couponGetTime = couponGetTime;
        this.userId = userId;
        this.randomFlag = randomFlag;
        this.mobilePhone = mobilePhone;
        this.stationIdList = stationIdList;
        this.couponName = couponName;
        this.issueName = issueName;
        this.couponRemark = couponRemark;
        this.issueRemark = issueRemark;
        this.verificationUserAccount = verificationUserAccount;
        this.couponNo = couponNo;
        this.activityType = activityType;
        this.activityName = activityName;
        this.verificationTime = verificationTime;
        this.verificationBeginTime = verificationBeginTime;
        this.verificationEndTime = verificationEndTime;
        this.couponType = couponType;
        this.couponAmt = couponAmt;
        this.blogNickName = blogNickName;
        this.couponEffectiveTime = couponEffectiveTime;
        this.bizId = bizId;
        this.bizType = bizType;
    }

    /**
     * 发放方式id
     */

    private String issueId;

    /**
     * 优惠卷id
     */

    private Long couponId;

    /** 用户领取该券后优惠券券码 */
    //@Excel(name = "用户领取该券后优惠券券码")
    // private String couponNo;

    /**
     * 是否使用：0、未使用；1、已使用；
     */
    @Excel(name = "是否使用", readConverterExp = "0=未使用,1=已使用")
    private String couponIsUsed;


    /**
     * 是否有效：1、有效；0、无效；；
     */
    @Excel(name = "是否有效", readConverterExp = "0=已过期,1=生效中,2=已作废，3=已生效")
    @ApiModelProperty(value = "0=已过期,1=生效中,2=已作废，3=已生效")
    private String couponIsEffective;

    /**
     * 优惠券获取时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "优惠券获取时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "发放时间")
    private Date couponGetTime;

    /**
     * $column.columnComment
     */
    private Integer userId;

    private String randomFlag;                //随机数

    public String getRandomFlag() {
        return randomFlag;
    }

    public void setRandomFlag(String randomFlag) {
        this.randomFlag = randomFlag;
    }

    /**
     * 手机号码
     */
    @Excel(name = "注册手机号")
    private String mobilePhone;
    private List<String> stationIdList;

    /**
     * 优惠卷名称
     */
    @Excel(name = "优惠卷名称")
    private String couponName;

    /**
     * 发放方式名称
     */
    @Excel(name = "发放方式名称")
    private String issueName;

    /**
     * 优惠卷标识
     */
    @Excel(name = "优惠卷标识")
    private String couponRemark;

    /**
     * 发放方式标识
     */
    @Excel(name = "发放方式标识")
    private String issueRemark;
    /**
     * 核销员账号
     */
    @Excel(name = "核销员账号")
    private String verificationUserAccount;

    /**
     * 优惠卷编码
     */
    private String couponNo;

    public Integer getActivityType() {
        return activityType;
    }

    public void setActivityType(Integer activityType) {
        this.activityType = activityType;
    }

    public String getActivityName() {
        return activityName;
    }

    public void setActivityName(String activityName) {
        this.activityName = activityName;
    }

    /**
     * 优惠券活动类型，0表示"手动领取"，1表示"支付成功后发放", 2表示"充值发放", 4表示"手动发放"
     */
    @ApiModelProperty(value = "发放类型，以优惠券统计页面发放类型下拉框为准")
    private Integer activityType;
    /**
     * 优惠券活动名称
     */
    @ApiModelProperty(value = "发放活动")
    private String activityName;
    /**
     * 优惠券获取时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "优惠核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "核销时间")
    private Date verificationTime;

    /**
     * 优惠券核销开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date verificationBeginTime;

    /**
     * 优惠券核销结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date verificationEndTime;

    /**
     * 优惠卷类型
     */
    @Excel(name = "优惠卷类型", readConverterExp = "1=现金,2=折扣,3=兑换")
    private String couponType;

    /**
     * 优惠卷金额
     */
    @Excel(name = "优惠卷金额")
    private String couponAmt;

    /**
     * 注册昵称
     */
    @Excel(name = "注册昵称")
    private String blogNickName;

    /**
     * 固定时间-优惠券有效期截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "固定时间-优惠券有效期截止时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "到期时间")
    private Date couponEffectiveTime;

    /**
     * 用户优惠劵关联的业务id
     */
    private Long bizId;

    /**
     * 用户优惠劵关联的业务类型
     */
    private String bizType;

    public Date getVerificationBeginTime() {
        return verificationBeginTime;
    }

    public void setVerificationBeginTime(Date verificationBeginTime) {
        this.verificationBeginTime = verificationBeginTime;
    }

    public Date getVerificationEndTime() {
        return verificationEndTime;
    }

    public void setVerificationEndTime(Date verificationEndTime) {
        this.verificationEndTime = verificationEndTime;
    }

    public Date getVerificationTime() {
        return verificationTime;
    }

    public void setVerificationTime(Date verificationTime) {
        this.verificationTime = verificationTime;
    }

    public String getCouponNo() {
        return couponNo;
    }

    public void setCouponNo(String couponNo) {
        this.couponNo = couponNo;
    }

    public String getVerificationUserAccount() {
        return verificationUserAccount;
    }

    public void setVerificationUserAccount(String verificationUserAccount) {
        this.verificationUserAccount = verificationUserAccount;
    }


    public String getCouponRemark() {
        return couponRemark;
    }

    public void setCouponRemark(String couponRemark) {
        this.couponRemark = couponRemark;
    }

    public String getIssueRemark() {
        return issueRemark;
    }

    public void setIssueRemark(String issueRemark) {
        this.issueRemark = issueRemark;
    }

    public String getCouponType() {
        return couponType;
    }

    public void setCouponType(String couponType) {
        this.couponType = couponType;
    }

    public String getCouponAmt() {
        return couponAmt;
    }

    public void setCouponAmt(String couponAmt) {
        this.couponAmt = couponAmt;
    }



    public Long getEnterpriseId() {
        return enterpriseId;
    }

    public void setEnterpriseId(Long enterpriseId) {
        this.enterpriseId = enterpriseId;
    }

    public Date getCouponGetTime() {
        return couponGetTime;
    }

    public void setCouponGetTime(Date couponGetTime) {
        this.couponGetTime = couponGetTime;
    }

    public String getCouponName() {
        return couponName;
    }

    public void setCouponName(String couponName) {
        this.couponName = couponName;
    }

    public String getIssueName() {
        return issueName;
    }

    public void setIssueName(String issueName) {
        this.issueName = issueName;
    }

    @Override
    public List<String> getStationIdList() {
        return stationIdList;
    }

    @Override
    public void setStationIdList(List<String> stationIdList) {
        this.stationIdList = stationIdList;
    }

    public String getMobilePhone() {
        return mobilePhone;
    }

    public void setMobilePhone(String mobilePhone) {
        this.mobilePhone = mobilePhone;
    }

    public Integer getUserId() {
        return userId;
    }


    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getBlogNickName() {
        return blogNickName;
    }

    public void setBlogNickName(String blogNickName) {
        this.blogNickName = blogNickName;
    }



    public String getUnionId() {
        return unionId;
    }

    public void setUnionId(String unionId) {
        this.unionId = unionId;
    }


    public String getIssueId() {
        return issueId;
    }

    public void setIssueId(String issueId) {
        this.issueId = issueId;
    }

    public Long getCouponId() {
        return couponId;
    }

    public void setCouponId(Long couponId) {
        this.couponId = couponId;
    }

    public String getCouponIsUsed() {
        return couponIsUsed;
    }

    public void setCouponIsUsed(String couponIsUsed) {
        this.couponIsUsed = couponIsUsed;
    }

    public String getCouponIsEffective() {
        return couponIsEffective;
    }

    public void setCouponIsEffective(String couponIsEffective) {
        this.couponIsEffective = couponIsEffective;
    }


    public Date getCouponEffectiveTime() {
        return couponEffectiveTime;
    }

    public void setCouponEffectiveTime(Date couponEffectiveTime) {
        this.couponEffectiveTime = couponEffectiveTime;
    }



    public String getIsDeleted() {
        return isDeleted;
    }

    public void setIsDeleted(String isDeleted) {
        this.isDeleted = isDeleted;
    }

    public Date getInvalidTime() {
        return invalidTime;
    }

    public void setInvalidTime(Date invalidTime) {
        this.invalidTime = invalidTime;
    }

    public Long getBizId() {
        return bizId;
    }

    public void setBizId(Long bizId) {
        this.bizId = bizId;
    }

    public String getBizType() {
        return bizType;
    }

    public void setBizType(String bizType) {
        this.bizType = bizType;
    }

    @Override
    public String toString() {
        return "CouponUser{" +
                "id=" + id +
                ", unionId='" + unionId + '\'' +
                ", enterpriseId=" + enterpriseId +
                ", ccsdId=" + ccsdId +
                ", isDeleted='" + isDeleted + '\'' +
                ", invalidTime=" + invalidTime +
                ", issueId='" + issueId + '\'' +
                ", couponId=" + couponId +
                ", couponIsUsed='" + couponIsUsed + '\'' +
                ", couponIsEffective='" + couponIsEffective + '\'' +
                ", couponGetTime=" + couponGetTime +
                ", userId=" + userId +
                ", randomFlag='" + randomFlag + '\'' +
                ", mobilePhone='" + mobilePhone + '\'' +
                ", stationIdList=" + stationIdList +
                ", couponName='" + couponName + '\'' +
                ", issueName='" + issueName + '\'' +
                ", couponRemark='" + couponRemark + '\'' +
                ", issueRemark='" + issueRemark + '\'' +
                ", verificationUserAccount='" + verificationUserAccount + '\'' +
                ", couponNo='" + couponNo + '\'' +
                ", activityType=" + activityType +
                ", activityName='" + activityName + '\'' +
                ", verificationTime=" + verificationTime +
                ", verificationBeginTime=" + verificationBeginTime +
                ", verificationEndTime=" + verificationEndTime +
                ", couponType='" + couponType + '\'' +
                ", couponAmt='" + couponAmt + '\'' +
                ", blogNickName='" + blogNickName + '\'' +
                ", couponEffectiveTime=" + couponEffectiveTime +
                '}';
    }
}
